var numeroOperatori;
var idOperatoriArray = new Array();
var tempTrattamentoField;
var tempClienteField;
var datePickerAppuntamento;
var tempVariablesAppuntamento = {
	boolTratt : false,
	boolOp : false,
	boolCliente : false,
	boolOra : false,
	celle : 0,
};
var tempTrattamenti = new Array();
var tempTrattamentiSelezionati = new Array();
var giorniSettimana = new Array('domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato');
var mesi = new Array('gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre');
var oreOccupateSingolo = {
	'80' : false,
	'815' : false,
	'830' : false,
	'845' : false,
	'90' : false,
	'915' : false,
	'930' : false,
	'945' : false,
	'100' : false,
	'1015' : false,
	'1030' : false,
	'1045' : false,
	'110' : false,
	'1115' : false,
	'1130' : false,
	'1145' : false,
	'120' : false,
	'1215' : false,
	'1230' : false,
	'1245' : false,
	'130' : false,
	'1315' : false,
	'1330' : false,
	'1345' : false,
	'140' : false,
	'1415' : false,
	'1430' : false,
	'1445' : false,
	'150' : false,
	'1515' : false,
	'1530' : false,
	'1545' : false,
	'160' : false,
	'1615' : false,
	'1630' : false,
	'1645' : false,
	'170' : false,
	'1715' : false,
	'1730' : false,
	'1745' : false,
	'180' : false,
	'1815' : false,
	'1830' : false,
	'1845' : false,
	'190' : false,
	'1915' : false,
	'1930' : false,
	'1945' : false,
};
var oreOccupateArray = {};
var altezzaCella;
var ultimaHover;
var testoMod = '';
var arrayOrdinatoOre = new Array('80','815','830','845','90','915','930','945','100','1015','1030','1045','110','1115',
'1130','1145','120','1215','1230','1245','130','1315','1330','1345','140','1415','1430','1445','150','1515','1530',
'1545','160','1615','1630','1645','170','1715','1730','1745','180','1815','1830','1845','190','1915','1930','1945');
var tmp = 0;
$.extend({
	getUrlVars : function() {
		var vars = [], hash;
		var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		for(var i = 0; i < hashes.length; i++) {
			hash = hashes[i].split('=');
			vars.push(hash[0]);
			vars[hash[0]] = hash[1];
		}
		return vars;
	},
	getUrlVar : function(name) {
		return $.getUrlVars()[name];
	}
});

Array.prototype.indexNamed = function(v) {
	var x, _i, _len, _results;
	_results = [];
	for( _i = 0, _len = this.length; _i < _len; _i++) {
		x = this[_i];
		if(x.name == v) {
			return _i;
		}
	}
};

$(window).bind("load", function() {
	$.datepicker.setDefaults($.datepicker.regional['it']);
	numeroOperatori = $('th.operatore').size();
	idOperatoriArray = $('.operatore').map(function() {
		return this.id;
	})
	for( l = 0; l < numeroOperatori; l++) {
		oreOccupateArray[idOperatoriArray[l]] = new cloneObject(oreOccupateSingolo);
	}
	primoLoad();

	$('.ui-datepicker').bind({
		click : function() {
			var mese, anno;
			var giorno = $('.ui-state-active').text();
			var stringaOnClick = $('.ui-state-default:first').parent().attr('onclick');

			// "DP_jQuery_1330533529908.datepicker._selectDay('#selectorCalendario_container',2,2012, this);return false;"
			var pezzi = stringaOnClick.split(',');

			for( i = 0; i < 4; i++) {
				numerico = String(pezzi[i]).search(/^\s*(\+|-)?\d+\s*$/) != -1;
				if(numerico) {
					if(pezzi[i] > 40)
						anno = pezzi[i];
					else {
						mese = parseInt(pezzi[i]) + 1;
					}
				}
			}
			if(giorno != "" && mese != "" && anno != "") {
				// aggiorno calendari
				for( h = 0; h < idOperatoriArray.length; h++) {
					$('.appuntamento').remove();
					aggiornaCalendario(idOperatoriArray[h], giorno, mese, anno, '');
				}
			};
		}
	});

	$('#aggiungiAppuntamento').click(function() {
		apriModal();
	});

	$('#aggiungiCliente').click(function() {
		where = $('#aggiungiCliente').attr('name');
		window.location.replace(where);
		window.location.href = where;
	});

	$('#vaiAdAdesso').click(function() {
		vaiAllOra();
	});
	creaLancetta();
	setInterval(function() {
		spostaLancetta();
		aggiornaStats();
	}, 1000 * 60);
	// ogni minuto
	spostaLancetta();
	aggiornaStats();
});
/**
 * Aggiorna un calendario e gli passa un json con i dettagli
 */
function aggiornaCalendario(operatore, giorno, mese, anno, additionalSharp) {

	// Rotella
	resetOreOccupate();
	op = "#" + operatore;
	additional = false;
	operatore = operatore.replace("_add", "");
	if(additionalSharp != '') {
		spinDiv = "<div class=\"spinning" + operatore + "\" style=\"position: absolute; top: " + ($(op).position().top - $('#tabellare').position().top + parseInt($('#content').css("padding-top").replace("px", "")) + 13) + "px; left: " + ($(op).position().left + $(op).width() - 15) + "px;\"><img src=\"images/spin.gif\" /></div>";
		additional = true;
		$('.appuntamenti_' + additionalSharp).before(spinDiv);
	} else
		$('.appuntamenti').before("<div class=\"spinning" + operatore + "\" style=\"position: absolute; top: " + ($(op).position().top - $('#tabellare').position().top + parseInt($('#content').css("padding-top").replace("px", "")) + 13) + "px; left: " + ($(op).position().left + $(op).width() - 15) + "px;\"><img src=\"images/spin.gif\" /></div>");

	// Aggionramento calendario
	$.getJSON('index.php?r=appuntamento/calendario&operatore=' + operatore + '&giorno=' + giorno + '&mese=' + mese + '&anno=' + anno + '', function(data) {
		idmod = $('#idmod').val();

		$.each(data, function(key, data) {
			modificaAttuale = (data['idAppuntamento'] == idmod);
			date = new Date(data['data']);
			caselle = data['durata'] / 15;
			oraminuto = (date.getHours()) + "" + (date.getMinutes());
			testo = data['cliente'] + " - " + data['trattamento'];
			id = "#" + oraminuto;
			if(additional) {
				// Salvo in array
				if(!modificaAttuale)
					{
						// aggiornamento ore occupate
						//oreOccupateArray[operatore][oraminuto] = true;
						occupaArray(oreOccupateArray[operatore],oraminuto,caselle);
					}
				id = id + "_" + additionalSharp;
			}
			op = "#" + operatore;
			//if(additional)
			//op = op + '_add';
			altezzaCasella = $(id).parent().height() * caselle;

			var scrollto = false;
			if(additional) {
				if(modificaAttuale)
					mod = "<div class=\"appuntamento_add\" name=\"" + data['idAppuntamento'] + "\" style=\"top: " + ($(id).position().top) + "px; left: " + ($("td[name=" + op.replace('#', '') + "_80]").position().left + 36) + "px; width: 20px; height: " + (altezzaCasella - 2) + "px; opacity: 0.4; \">" + testo + "</div>";
				else
					mod = "<div class=\"appuntamento_add\" name=\"" + data['idAppuntamento'] + "\" style=\"top: " + ($(id).position().top) + "px; left: " + ($("td[name=" + op.replace('#', '') + "_80]").position().left + 36) + "px; width: " + ( $('.cellaVuota_add').width() - 36 )+ "px; height: " + (altezzaCasella - 2) + "px\">" + testo + "</div>";
			} else {
				var idSel = $.getUrlVar('id');
				if(idSel != undefined && idSel == data['idAppuntamento']) {
					scrollto = true;
					mod = "<div class=\"appuntamento selectedApp\" name=\"" + data['idAppuntamento'] + "\" style=\"top: " + ($(id).position().top - $('.appuntamenti').position().top + parseInt($('#content').css("padding-top").replace("px", "")) - 2) + "px; left: " + (($("td[name=" + op.replace('#', '') + "]").position().left) + 36) + "px; width: " + $("td[name=" + (op.replace('#', '') + "]").width() - 2 - 36) + "px; height: " + altezzaCasella + "px\">" + testo + "</div>";
				} else {
					mod = "<div class=\"appuntamento\" name=\"" + data['idAppuntamento'] + "\" style=\"top: " + ($(id).position().top - $('.appuntamenti').position().top + parseInt($('#content').css("padding-top").replace("px", "")) - 2) + "px; left: " + ($("td[name=" + op.replace('#', '') + "]").position().left + 36) + "px; width: " + ($("td[name=" + op.replace('#', '') + "]").width() - 2 - 36) + "px; height: " + altezzaCasella + "px\">" + testo + "</div>";
				}

			}

			if(additional)
				$('.appuntamenti_add').before(mod);
			else {
				$('.appuntamenti').before(mod);
				if(scrollto) {
					$('.spaziaturaTop').scrollTo($('.selectedApp'), 800, {
						offset : -50
					});
				}
			}
			//if($('.appuntamento[name=' + data['idAppuntamento']).data("events").dblclick[0].data==null)
			if($('.appuntamento[name=' + data['idAppuntamento'] + ']').data("events") == undefined)
				$('.appuntamento[name=' + data['idAppuntamento'] + ']').dblclick(function() {
					apriModifica($(this));
				});
		});
		$('.spinning' + operatore).remove();
	});
}

function pulsanteTrattamento(modifica) {
	tempTrattamentoField = $('#trattamento');
	tempTrattamentoField.autocomplete({
		source : "index.php?r=trattamento/ajaxSearch",
		minLength : 2,
		focus : function(event, ui) {
			$("#trattamento").val(ui.item.label);
			return false;
		},
		select : function(event, ui) {
			split = ui.item.value.split('|');

			// Sostituisco campo con etichetta
			name = (tempTrattamenti.length + 1);
			$('#listaTrattamenti').append('<div class="etichetta-trattamento not-set" name="' + name + '" durata="'+split[1]+'">' + name + ' / ' + ui.item.label + '</div>');

			// split
			idTratt = split[0];
			//idOp = split[1];
			caselle = split[1];
			//nomeOp = split[3];
			tempVariablesAppuntamento['boolOp'] = true;
			tempVariablesAppuntamento['boolTratt'] = true;
			//tempVariablesAppuntamento['celle'] = parseInt(tempVariablesAppuntamento['celle']) + parseInt(caselle);
			$('.appuntamento_new').remove();
			tempVariablesAppuntamento['boolOra'] = false;

			tempTrattamenti.push({
				"name" : name,
				"id" : idTratt,
				"celle" : caselle,
				"boolora" : false,
				"ora" : 0,
				"operatore" : 0,
				"trattamento" : ui.item.label,
				"giorno" : 0,
				"mese" : 0,
				"anno" : 0,
				"DOM" : 0,
			});
			checkSubmit(modifica);

			$('#trattamento').val('');

			// Restore etichetta
			$('.etichetta-trattamento[name=' + name + ']').dblclick(function() {
				tempTrattamentoField.val('');

				trt = tempTrattamenti[tempTrattamenti.indexNamed($(this).attr('name'))];
				oporario = trt.ora;

				if (oporario!=undefined && oporario!=0){
					oporario = oporario.split("_");
					disoccupaArray(oreOccupateArray[oporario[0]],oporario[1],trt.celle);
				}

				//tempVariablesAppuntamento['celle'] = parseInt(tempVariablesAppuntamento['celle']) - parseInt(tempTrattamenti[tempTrattamenti.indexNamed($(this).attr('name'))].celle);
				tempVariablesAppuntamento['celle'] = 0;
				tempTrattamenti.splice(tempTrattamenti.indexNamed($(this).attr('name')), 1);
				tempTrattamentiSelezionati.splice(arrayIndexOf(tempTrattamentiSelezionati, $(this).attr('name')), 1);
				if(tempTrattamenti.length == 0)
					tempVariablesAppuntamento['boolTratt'] = false;
				//$('#trattamentoId').val('');
				//$('.operatore_add').text('Operatore');
				$('.appuntamento_new').remove();
				$(this).remove();
				pulsanteTrattamento(modifica);
				checkSubmit(modifica);
				checkAnimation();
			});

			$('.etichetta-trattamento[name=' + name + ']').click(function() {

				trt = tempTrattamenti[tempTrattamenti.indexNamed($(this).attr('name'))];
				if (trt!=undefined) {
					oporario = trt.ora;
					if (oporario!=0) {
						oporario = oporario.split("_");
						disoccupaArray(oreOccupateArray[oporario[0]],oporario[1],trt.celle);
					}
				}

				indexOf = arrayIndexOf(tempTrattamentiSelezionati, $(this).attr('name'));
				tempVariablesAppuntamento['celle'] = $(this).attr('durata');
				// se c'è già tra i selezionati, deseleziono
				if(indexOf != -1) {
					// è già selezionato tolgo da sotto
					tempTrattamentiSelezionati.splice(indexOf, 1);
					//tempVariablesAppuntamento['celle'] = $(this).attr('durata');
					tempVariablesAppuntamento['celle'] = parseInt(tempVariablesAppuntamento['celle']) - parseInt(tempTrattamenti[tempTrattamenti.indexNamed($(this).attr('name'))].celle);
					$('.appuntamento_fix[title=' + idName + ']').remove();
					$('.appuntamento_new[title=' + idName + ']').remove();
					$(this).attr('class', 'etichetta-trattamento not-set');
				} else {
					// non è selezionato, lampeggia
					obj = tempTrattamenti[tempTrattamenti.indexNamed($(this).attr('name'))];
					obj.ora = 0;
					obj.boolora = false;
					obj.giorno = 0;
					obj.mese = 0;
					obj.anno = 0;
					obj.DOM = 0;
					idName = $(this).attr('name');
					//tempVariablesAppuntamento['celle'] = $(this).attr('durata');
					tempVariablesAppuntamento['celle'] = parseInt(tempVariablesAppuntamento['celle']) + parseInt(obj.celle);
					tempTrattamentiSelezionati.push(idName);
					$('.appuntamento_fix[title=' + idName + ']').remove();
					$('.appuntamento_new[title=' + idName + ']').remove();
					$(this).attr('class', 'etichetta-trattamento');
				}
				checkSubmit(false);
				checkAnimation();
			});
			return false;
		}
	});

	if(modifica) {
		$('.etichetta-trattamento').click(function() {
			$('.etichetta-trattamento').replaceWith(tempTrattamentoField);
			tempVariablesAppuntamento['boolOp'] = false;
			tempVariablesAppuntamento['boolTratt'] = false;
			tempVariablesAppuntamento['celle'] = 0;
			tempTrattamentoField.val('');
			$('#trattamentoId').val('');
			$('.operatore_add').text('Operatore');
			$('.appuntamento_new').remove();
			pulsanteTrattamento(modifica);
			checkSubmit(modifica);
			$('#trattamento').removeAttr('style');
		});
	}
}

function datePickerSelect() {
	date = $('#datePickerAppuntamento').datepicker("getDate");

	// rimuovo gli appuntamenti
	$('.appuntamento_add').remove();
	$('.appuntamento_fix').remove();
	//resetOreOccupate();
	for( opn = 0; opn < idOperatoriArray.length; opn++) {
		aggiornaCalendarioSingolo(idOperatoriArray[opn] + '_add');
	}
	$('.appuntamento_new').remove();
	tempVariablesAppuntamento['boolOra'] = false;
	checkSubmit(true);
	checkSubmit(false);

	for( tapp = 0; tapp < tempTrattamenti.length; tapp++) {
		app = tempTrattamenti[tapp];

		if(app.giorno == date.getDate() && app.mese == (date.getMonth() + 1) && app.anno == date.getFullYear()) {
			// è oggi!
			toadd = app.DOM;
			$(toadd).click(function(eo) {
				idName = $(this).attr('title');
				obj = tempTrattamenti[tempTrattamenti.indexNamed(idName)];
				obj.ora = 0;
				obj.boolora = false;
				obj.giorno = 0;
				obj.mese = 0;
				obj.anno = 0;
				obj.DOM = 0;
				$(this).attr('class', 'appuntamento_new');
				$('.etichetta-trattamento[name=' + idName + ']').attr('class', 'etichetta-trattamento not-set');
				$('.etichetta-trattamento[name=' + idName + ']').removeAttr('title');
				tempTrattamentiSelezionati.push(idName);
				checkAnimation();
				checkSubmit(false);
			});
			$('.appuntamenti_add').before(toadd);
		}
	}

	// cambio data scritta
	$('#dataAppuntamento').text(giorniSettimana[date.getDay()] + " " + date.getDate() + " " + mesi[date.getMonth()] + " " + date.getFullYear());
}

function primoLoad() {
	var data = $.getUrlVar('data');

	var mese, anno;
	var giorno = $('.ui-state-active').text();
	var stringaOnClick = $('.ui-state-default:first').parent().attr('onclick');

	if(data != undefined) {
		var patt = /[0-9]{4}-[0-9]{2}-[0-9]{2}/;
		if(data.match(patt)) {
			aaaammgg = data.split('-');
			anno = aaaammgg[0];
			mese = aaaammgg[1];
			giorno = aaaammgg[2];

			$('#selectorCalendario_container').datepicker("setDate", new Date(anno, parseInt(mese - 1), giorno));
		}
	} else {

		var pezzi = stringaOnClick.split(',');

		for( i = 0; i < 4; i++) {
			numerico = String(pezzi[i]).search(/^\s*(\+|-)?\d+\s*$/) != -1;
			if(numerico) {
				if(pezzi[i] > 40)
					anno = pezzi[i];
				else {
					mese = parseInt(pezzi[i]) + 1;
				}
			}
		}
	}
	if(giorno != "" && mese != "" && anno != "") {
		// aggiorno calendari
		for( k = 0; k < idOperatoriArray.length; k++) {
			$('.appuntamento').remove();
			aggiornaCalendario(idOperatoriArray[k], giorno, mese, anno, '');
		}
	}
	vaiAllOra();
}

function vaiAllOra() {

	// Calcolo ora
	var now = new Date();
	ora = now.getHours();
	minuti = now.getMinutes();
	minuti = Math.floor(minuti / 15) * 15;
	id = '#' + ora + minuti;

	// Scroll to
	if(ora < 20 && ora >= 8) {
		var idSel = $.getUrlVar('id');

		if(idSel != undefined) {
		} else {
			$('.spaziaturaTop').scrollTo(id, 800, {
				offset : -50
			});
		}
	}

}

function aggiornaCalendarioSingolo(idOp) {
	// Prendo data
	data = $('#datePickerAppuntamento').datepicker("getDate");
	if(data == null)
		return;
	aggiornaCalendario(idOp, data.getDate(), data.getMonth() + 1, data.getFullYear(), 'add');
}

function pulsanteCliente() {
	tempClienteField = $('#cliente');
	tempClienteField.autocomplete({
		source : "index.php?r=cliente/ajaxSearch",
		minLength : 2,
		focus : function(event, ui) {
			$("#cliente").val(ui.item.label);
			return false;
		},
		select : function(event, ui) {
			// Sostituisco campo con etichetta
			$('#cliente').replaceWith('<div class="etichetta-cliente">' + ui.item.label + '</div>');
			// Aggiorno campo hidden
			$('#clienteId').val(ui.item.value);
			tempVariablesAppuntamento['boolCliente'] = true;
			checkSubmit(false);

			$('.etichetta-cliente').click(function() {
				$('.etichetta-cliente').replaceWith(tempClienteField);
				tempVariablesAppuntamento['boolCliente'] = false;
				tempClienteField.val('');
				$('#clienteId').val('');
				pulsanteCliente();
				checkSubmit(false);
			});
			return false;
		}
	});
}

function checkSubmit(modifica) {
	if(modifica) {
		capp = $('#modificaAppuntamento');
		for(var key in tempVariablesAppuntamento) {
			if(!tempVariablesAppuntamento[key]) {
				capp.attr('disabled', 'disabled');
				// opacity 50
				capp.fadeTo('slow', 0.4);
				return;
			}
		}

		giorno = $('#datePickerAppuntamento').datepicker("getDate");

		$.getJSON('index.php?r=appuntamento/validate&giorno=' + (giorno.getDate()) + '&mese=' + (giorno.getMonth() + 1) + '&anno=' + (giorno.getFullYear()) + '&cliente=' + $('#clienteId').val() + '&ora=' + $('.appuntamento_new').attr('name') + '&minuti=' + (tempVariablesAppuntamento['celle'] * 15), function(data) {
			if(data == true) {
				capp.attr('disabled', false);
				capp.fadeTo('slow', 1);
			}
		});
	} else {
		capp = $('#creaAppuntamento');
		nn = tempTrattamenti.length;
		if(nn == 0 || $('#clienteId').val() == '') {
			capp.attr('disabled', 'disabled');
			capp.fadeTo('slow', 0.4);
			return;
		}
		for( tap = 0; tap < nn; tap++) {
			if(tempTrattamenti[tap].boolora == false) {
				capp.attr('disabled', 'disabled');
				capp.fadeTo('slow', 0.4);
				return;
			}
		}
		capp.attr('disabled', false);
		capp.fadeTo('slow', 1);
	}

}

function occupaArray(oreOccupateArray, oraminuto, caselle) {
	primo = arrayOrdinatoOre.indexOf(oraminuto);

	for (kl = 0; kl < caselle; kl ++) {
		oraDaOccupare = arrayOrdinatoOre[primo + kl];
		oreOccupateArray[oraDaOccupare] = true;
	}
}

function disoccupaArray(oreOccupateArray, oraminuto, caselle) {
	primo = arrayOrdinatoOre.indexOf(oraminuto);

	for (kl = 0; kl < caselle; kl ++) {
		oraDaOccupare = arrayOrdinatoOre[primo + kl];
		oreOccupateArray[oraDaOccupare] = false;
	}
}

function checkOra(orarioString, cas, idOp) {
	var da = 0, i = 0;

	/*for(var key in oreOccupateSingolo) {
		if(key == orarioString)
			break;
		da++;
	}*/
	da = arrayOrdinatoOre.indexOf(orarioString);
	
	if (arrayOrdinatoOre[parseInt(da)+parseInt(cas)-1] == undefined) {
		return false;
	}
	
	for (kl = 0; kl < cas; kl ++) {
		oraDaControllare = arrayOrdinatoOre[da + kl];
		if (oreOccupateArray[idOp][oraDaControllare]==true) {
			return false;
		}
	}
	return true;
	/*for(var key in oreOccupateSingolo) {
		if((i >= da) && i < (da + parseInt(caselle))) {
			if(oreOccupateArray[idOp][key] == true)
				return false;
		} else if(i > (da + caselle))
			return true;
		i++;
	}
	return true;*/
}

function resetOreOccupate() {
	for( i = 0; i < numeroOperatori; i++)
		for(var key in oreOccupateArray[i])
		oreOccupateArray[i][key] = false;
}

function cloneObject(source) {
	for(i in source) {
		if( typeof source[i] == 'source') {
			this[i] = new cloneObject(source[i]);
		} else {
			this[i] = source[i];
		}
	}
}

function getOperatoreIndex(idOperatore) {
	for( i = 0; i < idOperatoriArray.length; i++) {
		if(idOperatoriArray[i] == idOperatore)
			return i;
	}
	return -1;
}

function creaLancetta() {
	//var lunghezza = ($('.operatore').width() + parseInt($('.operatore').css('padding-left').replace("px", "")) + parseInt($('.operatore').css('padding-right').replace("px", ""))) * numeroOperatori + 2;
	var lunghezza = $('tr.first').width() - $('#80').width() - parseInt($('#80').css('padding-right').replace("px", "")) - parseInt($('#80').css('padding-left').replace("px", ""));
	var top = $('#80').position().top;
	var left = $('#80').position().left + $('#80').width() + parseInt($('#80').css('padding-left').replace("px", "")) + parseInt($('#80').css('padding-right').replace("px", ""));
	barra = '<div class="barra" style="width: ' + lunghezza + 'px; top: ' + top + 'px; left: ' + left + 'px"></div>';

	$('.appuntamenti').before(barra);
}

function spostaLancetta() {
	if(ora < 20 && ora >= 8) {
		adesso = new Date();
		ora = adesso.getHours();
		minuti = adesso.getMinutes();
		if(ora > 19)
			ora = 19;
		if(ora < 8)
			ora = 8;
		inpiu = "";
		if(minuti < 15) {
			inpiu = inpiu = "0";
		} else if(minuti >= 15 && minuti < 30) {
			inpiu = "15";
		} else if(minuti >= 30 && minuti < 45) {
			inpiu = "30";
		} else {
			inpiu = "45";
		}
		newTop = $('#' + ora + inpiu).position().top - $('.appuntamenti').position().top + parseInt($('#content').css("padding-top").replace("px", ""));
		newTop = newTop + parseInt(Math.round((minuti % 15) * ($('#80').height() + 8) / 15));
		//$('.barra').css('top', newTop);
		$('.barra').animate({
			top : newTop
		}, {
			duration : 2000,
			easing : 'easeInOutCirc'
		});
	}
}

function aggiornaStats() {
	$.getJSON("index.php?r=site/ajaxOggi", function(data) {
		$("#trattOggi").text(data['trattamenti']);
		$("#clientiOggi").text(data['clienti']);
	});
}

function apriModifica(obj) {
	id = obj.attr('name');

	$.get("index.php?r=appuntamento/edit&id=" + id, function(data) {
		$.modal('<div id="modal"><div class="notificationwrap"><div class="notification" style="background: rgba(0,0,0,.85);"><div class="img"><img src="images/clock.png" /><br/></div><div class="text">' + data + '</div></div></div></div>', {
			minHeight : '600px',
			minWidth : '900px',
			autoResize : true,
			opacity : 30,
			overlayCss : {
				backgroundColor : "#000"
			},
			onClose : function(dialog) {
				dialog.data.fadeOut('fast', function() {
					dialog.container.hide('fast', function() {
						dialog.overlay.fadeOut('fast', function() {
							tempTrattamentoField = null;
							tempClienteField = null;
							datePickerAppuntamento = null;
							tempVariablesAppuntamento = {
								boolTratt : false,
								boolOp : false,
								boolCliente : false,
								boolOra : false,
								celle : 0,
							};
							tempTrattamenti = new Array();
							tempTrattamentiSelezionati = new Array();
							testoMod = '';
							$.modal.close();
						});
					});
				});
			},
			onOpen : function(dialog) {
				dialog.overlay.fadeIn('fast', function() {
					dialog.data.hide();
					dialog.container.fadeIn('fast', function() {
						dialog.data.fadeIn('fast');

						//pulsanteTrattamento(true);
						dp = $("#datePickerAppuntamento");
						dp.datepicker({
							onSelect : function() {
								datePickerSelect();
							}
						});
						dp.datepicker($.datepicker.regional['it']);
						giorno = $("#giornomod").val();
						mese = $("#mesemod").val();
						anno = $("#annomod").val();
						day = new Date(anno, parseInt(mese) - 1, giorno);

						dp.datepicker("setDate", day);
						checkSubmit(true);

						tempVariablesAppuntamento['boolOra'] = false;
						tempVariablesAppuntamento['boolCliente'] = true;
						tempVariablesAppuntamento['boolOp'] = true;
						tempVariablesAppuntamento['boolTratt'] = true;
						$('#trattamentoId').val($('#trattmod').val());
						$('#clienteId').val($('#clientemod').val());

						tempVariablesAppuntamento['celle'] = $('#cellemod').val();
						$('.cellaVuota_add,.cellaVuotaPrima_add,.cellaVuotaUltima_add').hover(function(eventObject) {// IN
							// Se esiste il rettangolo lo uso, altrimenti lo creo
							if(tempVariablesAppuntamento['celle'] == 0)
								return;
							if(tempVariablesAppuntamento['boolOra'] == true)
								return;
							// Orario
							info = $(this).attr('name').split('_');
							
							if(!checkOra(info[1], tempVariablesAppuntamento['celle'], info[0]))
								return;
							
							if(ultimaHover != undefined)
								if(ultimaHover.is($(this)))// non va
									return;
							ultimaHover = $(this);
							
							if (testoMod=='')	testoMod = $('.appuntamento_add[name='+$('#idmod').val()+']').text();
							mod = "<div class=\"appuntamento_new\" name=\"" + $(this).attr('name') + "\" style=\"top: " + ($(this).position().top) + "px;" + "left: " + ($(this).position().left + 36) + "px; width: " + ($(this).width() - 36) + "px; height: " + (($('.cellaVuota_add').height() + parseInt($('.cellaVuota_add').css('padding-top')) + parseInt($('.cellaVuota_add').css('padding-bottom')) + 1) * tempVariablesAppuntamento['celle']) + "px\">"+testoMod+"</div>";

							$('.appuntamento_new').remove();
							$('.appuntamenti_add').before(mod);
							//$('.cellaVuota_add').removeListeners();
							clickFunctionMod = function(eo) {
								// Se clicco fisso l'ora
								tempVariablesAppuntamento['boolOra'] = true;
								checkSubmit(true);
								$('.appuntamento_new').click(function(eo) {
									tempVariablesAppuntamento['boolOra'] = false;
									checkSubmit(true);
								})
							};
							$('.appuntamento_new').click(clickFunctionMod);
							$(this).click(clickFunctionMod);
						});

						$('#modificaAppuntamento').click(function(cl) {
							$.getJSON('index.php?r=appuntamento/ajaxEdit&id=' + $("#idmod").val() + '&operatore=' + info[0] + '&trattamento=' + $('#trattamentoId').val() + '&giorno=' + (giorno.getDate()) + '&mese=' + (giorno.getMonth() + 1) + '&anno=' + (giorno.getFullYear()) + '&cliente=' + $('#clienteId').val() + '&ora=' + info[1], function(data) {
								tempTrattamentoField = null;
								tempClienteField = null;
								datePickerAppuntamento = null;
								tempVariablesAppuntamento = {
									boolTratt : false,
									boolOp : false,
									boolCliente : false,
									boolOra : false,
									celle : 0,
								};
								
								oggi = $('#selectorCalendario_container').datepicker("getDate");
								if(oggi.getDate() == giorno.getDate() && oggi.getMonth() == giorno.getMonth() && giorno.getFullYear() == oggi.getFullYear()) {
									$('.appuntamento').remove();
									for( r = 0; r < idOperatoriArray.length; r++) {
										aggiornaCalendario(idOperatoriArray[r], giorno.getDate(), giorno.getMonth() + 1, giorno.getFullYear(), '');
									}
								}
								$.modal.close();
							});
						});
						$('#cancellaAppuntamento').click(function(cl) {

							$.getJSON('index.php?r=appuntamento/ajaxDelete&id=' + $("#idmod").val(), function(data) {
								oggi = new Date();
								$('.appuntamento[name=' + $("#idmod").val() + ']').remove();
								$.modal.close();
							});
						});
					});
				});
			}
		});
		setTimeout(function() {
			$('.appuntamento_add').remove();
			$('.appuntamento_new').remove();
			for( opn = 0; opn < idOperatoriArray.length; opn++) {
				aggiornaCalendarioSingolo(idOperatoriArray[opn] + '_add');
			}

		}, 1100);
	});
}

function apriModal() {
	$.get("index.php?r=appuntamento/create", function(data) {
		$.modal('<div id="modal"><div class="notificationwrap"><div class="notification" style="background: rgba(0,0,0,.85);"><div class="img"><img src="images/clock.png" /><br/></div><div class="text">' + data + '</div></div></div></div>', {
			minHeight : '700px',
			minWidth : '1136px',
			autoResize : false,
			opacity : 30,
			overlayCss : {
				backgroundColor : "#000"
			},
			onClose : function(dialog) {
				dialog.data.fadeOut('fast', function() {
					dialog.container.hide('fast', function() {
						dialog.overlay.fadeOut('fast', function() {
							tempTrattamentoField = null;
							tempClienteField = null;
							datePickerAppuntamento = null;
							tempVariablesAppuntamento = {
								boolTratt : false,
								boolOp : false,
								boolCliente : false,
								boolOra : false,
								celle : 0,
							};
							tempTrattamenti = new Array();
							tempTrattamentiSelezionati = new Array();
							$.modal.close();
						});
					});
				});
			},
			onOpen : function(dialog) {
				dialog.overlay.fadeIn('fast', function() {
					dialog.data.hide();
					dialog.container.fadeIn('fast', function() {
						dialog.data.fadeIn('fast');

						pulsanteTrattamento(false);
						pulsanteCliente();

						$("#datePickerAppuntamento").datepicker({
							onSelect : function() {
								datePickerSelect();
							}
						});
						$("#datePickerAppuntamento").datepicker($.datepicker.regional['it']);

						checkSubmit(false);

						$('.cellaVuota_add,.cellaVuotaPrima_add,.cellaVuotaUltima_add').hover(function(eventObject) {// IN
							// Se esiste il rettangolo lo uso, altrimenti lo creo
							/*if(tempVariablesAppuntamento['celle'] == 0)
							 return;
							 if(tempVariablesAppuntamento['boolOra'] == true)
							 return;*/
							if(tempTrattamentiSelezionati.length == 0)
								return;
							if(ultimaHover != undefined) {
								if(ultimaHover.is($(this)))// non va
									return;
								}
							ultimaHover = $(this);

							// Orario
							info = $(this).attr('name').split('_');
							if(!checkOra(info[1], tempVariablesAppuntamento['celle'], info[0]))
								return;

							// Orario che si vede

							celleTotali = 0, offset = 0, celleLocali = 0;
							mod = '';
							altezzaCella = (($('.cellaVuota_add').height() + parseInt($('.cellaVuota_add').css('padding-top')) + parseInt($('.cellaVuota_add').css('padding-bottom')) + 1));

							for( rr = 0; rr < tempTrattamentiSelezionati.length; rr++) {
								idName = tempTrattamentiSelezionati[rr];
								offset = altezzaCella * celleTotali;

								obj = tempTrattamenti[tempTrattamenti.indexNamed(idName)];
								nome = obj.name + ' / ' + obj.trattamento;
								newHour = getOrario(rr, info[1], celleTotali);

								celleLocali = tempTrattamenti[tempTrattamenti.indexNamed(idName)].celle;
								celleTotali = parseInt(celleTotali) + parseInt(celleLocali);

								mod = mod + "<div class=\"appuntamento_new\" name=\"" + info[0] + "_" + newHour + "_"+ caselle +"\" title=\"" + obj.name + "\" style=\"top: " + ($(this).position().top + offset) + "px; left: " + ($(this).position().left + 36) + "px; width: " + ($(this).width() - 36) + "px; height: " + (altezzaCella * celleLocali) + "px\">" + nome + "</div>";
							}

							$('.appuntamento_new').remove();
							$('.appuntamenti_add').before(mod);

							var clickFunction = function(eo) {
								// Se clicco fisso l'ora

								$.each($('.appuntamento_new'), function() {
									idName = $(this).attr('title');
									obj = tempTrattamenti[tempTrattamenti.indexNamed(idName)];
									obj.ora = $(this).attr('name');
									opora = $(this).attr('name').split("_");
									obj.boolora = true;
									calendario = $('#datePickerAppuntamento').datepicker("getDate");
									obj.giorno = calendario.getDate();
									obj.mese = calendario.getMonth() + 1;
									obj.anno = calendario.getFullYear();

									$('.etichetta-trattamento[name=' + idName + ']').attr('title', $('#dataAppuntamento').text() + " ore " + $('#' + opora[1] + "_add").text());
									$('.etichetta-trattamento[name=' + idName + ']').attr('class', 'etichetta-trattamento');
									tempTrattamentiSelezionati = new Array();

									occupaArray(oreOccupateArray[opora[0]],opora[1],opora[2]);

									$(this).click(function(eo) {
										idName = $(this).attr('title');
										opora = $(this).attr('name').split("_");
										obj = tempTrattamenti[tempTrattamenti.indexNamed(idName)];
										obj.ora = 0;
										obj.boolora = false;
										obj.giorno = 0;
										obj.mese = 0;
										obj.anno = 0;
										obj.DOM = 0;
										$(this).attr('class', 'appuntamento_new');
										$('.etichetta-trattamento[name=' + idName + ']').attr('class', 'etichetta-trattamento not-set');
										$('.etichetta-trattamento[name=' + idName + ']').removeAttr('title');
										tempTrattamentiSelezionati.push(idName);
										tempVariablesAppuntamento['celle'] = opora[2];

										checkAnimation();
										checkSubmit(false);

										disoccupaArray(oreOccupateArray[opora[0]],opora[1],opora[2]);
									});

									obj.DOM = $(this);
								});

								checkSubmit(false);

								$('.appuntamento_new').attr('class', 'appuntamento_fix');

							};

							$(this).click(clickFunction);
							$('.appuntamento_new').click(clickFunction);
						});

						$('#creaAppuntamento').click(function(cl) {

							op = '';
							trattamenti = '';
							giorno = '';
							mese = '';
							anno = '';
							ora = '';
							qualcosaOggi = false;
							oggi = new Date();
							
							for( fin = 0; fin < tempTrattamenti.length; fin++) {
								appunt = tempTrattamenti[fin];
								info = appunt.ora.split("_");
								operatore = info[0];
								orario = info[1];

								op = op + operatore + "_";
								ora = ora + orario + "_";
								giorno = giorno + appunt.giorno + "_";
								mese = mese + appunt.mese + "_";
								anno = anno + appunt.anno + "_";
								trattamenti = trattamenti + appunt.id + "_";
								
								if(oggi.getDate() == appunt.giorno && oggi.getMonth() == (appunt.mese - 1) && oggi.getFullYear() == appunt.anno) qualcosaOggi = true;
							}

							$.getJSON('index.php?r=appuntamento/ajaxCreate&operatore=' + op + '&trattamenti=' + trattamenti + '&giorno=' + giorno + '&mese=' + mese + '&anno=' + anno + '&cliente=' + $('#clienteId').val() + '&ora=' + ora, function(data) {
								tempTrattamentoField = null;
								tempClienteField = null;
								datePickerAppuntamento = null;
								tempVariablesAppuntamento = {
									boolTratt : false,
									boolOp : false,
									boolCliente : false,
									boolOra : false,
									celle : 0,
								};
								tempTrattamenti = new Array();
								tempTrattamentiSelezionati = new Array();

								oggi = new Date();
								
								if(qualcosaOggi) {
									$('.appuntamento').remove();
									for( r = 0; r < idOperatoriArray.length; r++) {
										aggiornaCalendario(idOperatoriArray[r], oggi.getDate(), oggi.getMonth() + 1, oggi.getFullYear(), '');
									}
								}
								$.modal.close();
							});
						});
					});
				});
			}
		});
		setTimeout(function() {
			datePickerSelect();
		}, 1100);
	});
}

function arrayIndexOf(array, search) {
	var indice;
	//contatore
	for(indice in array) {
		if(array[indice] == search)
			return indice;
	}
	return -1;
}

function checkAnimation() {
	if(tempTrattamentiSelezionati.length == 0) {
		$('.etichetta-trattamento').removeAttr('style');
		return;
	}

	jquerystring = '';
	for( tts = 0; tts < tempTrattamentiSelezionati.length; tts++) {
		jquerystring = jquerystring + '.etichetta-trattamento[name=' + tempTrattamentiSelezionati[tts] + '],';
	}

	$(jquerystring).stop();
	$(jquerystring).animate({
		opacity : 1,
	}, 350, function() {
		$(this).animate({
			opacity : 0.5,
		}, 350, function() {
			checkAnimation();
		})
	});

}
// data rr (non so) + ora + celle da quell'ora, restituire l'ora finale
function getOrario(rr, ora, celleLocali) {
	if(rr == 0)
		return ora;
	/*residue = -1;
	for(key in oreOccupateSingolo) {
		if(residue != -1)
			residue--;
		if(key == ora)
			residue = celleLocali;
		if(residue == 0)
			return key;
	}*/
	inizio = arrayOrdinatoOre.indexOf(ora);
	fine = inizio+celleLocali;
	return arrayOrdinatoOre[fine];
}
